const express = require('express');
const router = express.Router();
const FoodTemplate = require('../models/FoodTemplate');

// 获取所有食物模板
router.get('/', async (req, res) => {
  try {
    const templates = await FoodTemplate.getAllFoodTemplates();
    res.json({
      success: true,
      data: templates,
      total: templates.length
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '获取食物模板失败',
      error: error.message
    });
  }
});

// 根据食物种类获取模板
router.get('/type/:foodType', async (req, res) => {
  try {
    const { foodType } = req.params;
    const templates = await FoodTemplate.getFoodTemplatesByType(foodType);
    res.json({
      success: true,
      data: templates,
      total: templates.length
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '根据类型获取食物模板失败',
      error: error.message
    });
  }
});

// 根据温度需求获取模板
router.get('/temperature/:temperatureType', async (req, res) => {
  try {
    const { temperatureType } = req.params;
    const templates = await FoodTemplate.getFoodTemplatesByTemperature(temperatureType);
    res.json({
      success: true,
      data: templates,
      total: templates.length
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '根据温度需求获取食物模板失败',
      error: error.message
    });
  }
});

// 根据ID获取食物模板详情
router.get('/:id', async (req, res) => {
  try {
    const { id } = req.params;
    const template = await FoodTemplate.getFoodTemplateById(id);
    
    if (!template) {
      return res.status(404).json({
        success: false,
        message: '食物模板不存在'
      });
    }

    res.json({
      success: true,
      data: template
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '获取食物模板详情失败',
      error: error.message
    });
  }
});

// 搜索食物模板
router.get('/search/:keyword', async (req, res) => {
  try {
    const { keyword } = req.params;
    const templates = await FoodTemplate.searchFoodTemplates(keyword);
    res.json({
      success: true,
      data: templates,
      total: templates.length
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '搜索食物模板失败',
      error: error.message
    });
  }
});

// 创建食物模板
router.post('/', async (req, res) => {
  try {
    const templateData = req.body;
    
    // 验证必填字段
    if (!templateData.name || !templateData.food_type) {
      return res.status(400).json({
        success: false,
        message: '食物名称和食物种类为必填字段'
      });
    }

    const template = await FoodTemplate.createFoodTemplate(templateData);
    res.status(201).json({
      success: true,
      message: '食物模板创建成功',
      data: template
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '创建食物模板失败',
      error: error.message
    });
  }
});

// 更新食物模板
router.put('/:id', async (req, res) => {
  try {
    const { id } = req.params;
    const templateData = req.body;
    
    // 验证必填字段
    if (!templateData.name || !templateData.food_type) {
      return res.status(400).json({
        success: false,
        message: '食物名称和食物种类为必填字段'
      });
    }

    const template = await FoodTemplate.updateFoodTemplate(id, templateData);
    if (!template) {
      return res.status(404).json({
        success: false,
        message: '食物模板不存在'
      });
    }

    res.json({
      success: true,
      message: '食物模板更新成功',
      data: template
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '更新食物模板失败',
      error: error.message
    });
  }
});

// 删除食物模板
router.delete('/:id', async (req, res) => {
  try {
    const { id } = req.params;
    const success = await FoodTemplate.deleteFoodTemplate(id);
    
    if (!success) {
      return res.status(404).json({
        success: false,
        message: '食物模板不存在'
      });
    }

    res.json({
      success: true,
      message: '食物模板删除成功'
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '删除食物模板失败',
      error: error.message
    });
  }
});

// 获取食物类型统计
router.get('/stats/types', async (req, res) => {
  try {
    const stats = await FoodTemplate.getFoodTypeStats();
    res.json({
      success: true,
      data: stats
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      message: '获取食物类型统计失败',
      error: error.message
    });
  }
});

module.exports = router;
